As computer systems have advanced, graphics processing units (GPUs) have become increasingly advanced both in complexity and computing power. GPUs are thus used to handle processing of increasingly large and complex graphics. As a result of this increase in processing power, GPUs are now capable of executing both graphics processing and more general computing tasks. The ability to execute general computing tasks on a GPU has lead to increased development of programs that execute general computing tasks on a GPU and the corresponding need to be able to perform an increasing number of the complex programming tasks.
A general-purpose computing on graphics processing units (GPGPU) program has a host portion executing on a central processing unit (CPU) and a device portion executing on a GPU. A GPGPU compiler compiles the GPU or device code and provides the host code to the local compiler for the host machine. The local compiler for the host machine can thus vary depending on the programming environment where the GPGPU compiler is being executed. As result, the code sent to the host compiler needs to be compliable by any of a variety of different host compilers. This can create issues when new features and/or advanced features are added to a programming language.